<!-- Copyright (C) Microsoft Corporation. All rights reserved. -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />

    <meta
      http-equiv="Content-Security-Policy"
      content="font-src 'self' data:; connect-src ws: wss: 'self' https:; default-src ws: wss: 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; manifest-src 'self'; img-src 'self' data: https:;"
    />

    <!-- Disable pinch zooming -->
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
    />

    <!-- Workbench Configuration -->
    <meta id="vscode-workbench-web-configuration" data-settings="{{WORKBENCH_WEB_CONFIGURATION}}" />

    <!-- Workarounds/Hacks (remote user data uri) -->
    <meta id="vscode-remote-user-data-uri" data-settings="{{REMOTE_USER_DATA_URI}}" />
    <meta id="vscode-remote-product-configuration" data-settings="{{PRODUCT_CONFIGURATION}}" />
    <meta id="vscode-remote-nls-configuration" data-settings="{{NLS_CONFIGURATION}}" />

    <!-- Workbench Icon/Manifest/CSS -->
    <link rel="icon" href="{{BASE}}/static/{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
    <link
      rel="manifest"
      href="{{BASE}}/static/{{COMMIT}}/src/browser/media/manifest.json"
      crossorigin="use-credentials"
    />
    <!-- PROD_ONLY
    <link data-name="vs/workbench/workbench.web.api" rel="stylesheet" href="{{BASE}}/static/{{COMMIT}}/lib/vscode/out/vs/workbench/workbench.web.api.css">
    END_PROD_ONLY -->
    <link rel="apple-touch-icon" href="{{BASE}}/static/{{COMMIT}}/src/browser/media/pwa-icon-384.png" />
    <meta name="apple-mobile-web-app-capable" content="yes" />

    <!-- Prefetch to avoid waterfall -->
    <!-- PROD_ONLY
    <link rel="prefetch" href="{{BASE}}/static/{{COMMIT}}/lib/vscode/node_modules/semver-umd/lib/semver-umd.js">
    END_PROD_ONLY -->

    <meta id="coder-options" data-settings="{{OPTIONS}}" />
  </head>

  <body aria-label=""></body>

  <!-- Startup (do not modify order of script tags!) -->
  <script>
    const parts = window.location.pathname.replace(/^\//g, "").split("/")
    parts[parts.length - 1] = "{{BASE}}"
    const url = new URL(window.location.origin + "/" + parts.join("/"))
    const staticBase = url.href.replace(/\/+$/, "") + "/static/{{COMMIT}}/lib/vscode"
    let nlsConfig
    try {
      nlsConfig = JSON.parse(document.getElementById("vscode-remote-nls-configuration").getAttribute("data-settings"))
      if (nlsConfig._resolvedLanguagePackCoreLocation) {
        const bundles = Object.create(null)
        nlsConfig.loadBundle = (bundle, language, cb) => {
          let result = bundles[bundle]
          if (result) {
            return cb(undefined, result)
          }
          // FIXME: Only works if path separators are /.
          const path = nlsConfig._resolvedLanguagePackCoreLocation + "/" + bundle.replace(/\//g, "!") + ".nls.json"
          fetch(`${url.href}/resource/?path=${encodeURIComponent(path)}`)
            .then((response) => response.json())
            .then((json) => {
              bundles[bundle] = json
              cb(undefined, json)
            })
            .catch(cb)
        }
      }
    } catch (error) {
      /* Probably fine. */
    }
    self.require = {
      baseUrl: `${staticBase}/out`,
      paths: {
        "vscode-textmate": `${staticBase}/node_modules/vscode-textmate/release/main`,
        "vscode-oniguruma": `${staticBase}/node_modules/vscode-oniguruma/release/main`,
        xterm: `${staticBase}/node_modules/xterm/lib/xterm.js`,
        "xterm-addon-search": `${staticBase}/node_modules/xterm-addon-search/lib/xterm-addon-search.js`,
        "xterm-addon-unicode11": `${staticBase}/node_modules/xterm-addon-unicode11/lib/xterm-addon-unicode11.js`,
        "xterm-addon-webgl": `${staticBase}/node_modules/xterm-addon-webgl/lib/xterm-addon-webgl.js`,
        "semver-umd": `${staticBase}/node_modules/semver-umd/lib/semver-umd.js`,
        "iconv-lite-umd": `${staticBase}/node_modules/iconv-lite-umd/lib/iconv-lite-umd.js`,
        jschardet: `${staticBase}/node_modules/jschardet/dist/jschardet.min.js`,
      },
      "vs/nls": nlsConfig,
    }
  </script>
  <script data-cfasync="false" src="{{BASE}}/static/{{COMMIT}}/dist/register.js"></script>
  <script data-cfasync="false" src="{{BASE}}/static/{{COMMIT}}/lib/vscode/out/vs/loader.js"></script>
  <!-- PROD_ONLY
  <script data-cfasync="false" src="{{BASE}}/static/{{COMMIT}}/lib/vscode/out/vs/workbench/workbench.web.api.nls.js"></script>
  <script data-cfasync="false" src="{{BASE}}/static/{{COMMIT}}/lib/vscode/out/vs/workbench/workbench.web.api.js"></script>
  END_PROD_ONLY -->
  <script>
    require(["vs/code/browser/workbench/workbench"], function () {})
  </script>
  <script>
    try {
      document.body.style.background = JSON.parse(localStorage.getItem("colorThemeData")).colorMap["editor.background"]
    } catch (error) {
      // Oh well.
    }
  </script>
</html>
